package com.cy.pj.activity.service.iml;

import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Service;

import com.cy.pj.activity.dao.ActivityDao;
import com.cy.pj.activity.pojo.Activity;
import com.cy.pj.activity.service.ActivityService;
import com.cy.pj.activity.timerScheduledTask.TimerScheduledTask;
@Service
public class ActivityServiceIml implements ActivityService {
	@Autowired
	private ActivityDao activityDao;
	@Override
	public List<Activity> findActivities() {
		return activityDao.findActivities();
	}
	@Override
	public int saveActivity(Activity activity) {
		int rows = activityDao.insertObject(activity);
		/*System.out.println("saveActivity.threadName="+Thread.currentThread().getName());
		//??????
		//开启活动倒计时(活动到了结束时间应该将其状态修改为0)
		//方案:(自己尝试)
		//1)Java 官方:
		//1.1)Timer
		//1.2)ScheduledExecutorService
		//2)借助第三方的任务调度框架(任务调度框架,quartz)
		//方案1:Timer应用
		//1.1构建Timer对象
		Timer timer=new Timer();//此对象可以负责去执行一些任务(这个对象内置一个线程和一个任务队列)
		//1.2启动线程执行任务
		timer.schedule(new TimerTask() {//TimerTask为任务
			@Override
			public void run() {//一旦调用此任务的线程获得了CPU就会执行这个任务的run方法
				System.out.println("updateState.threadName="+Thread.currentThread().getName());
				System.out.println("执行任务...");
				activityDao.UpdateState(activity.getId());
				timer.cancel();//退出任务调度后线程也会销毁
			}
		}, activity.getEndTime());//按指定时间执行任务.
		return rows;
	}*/
		
		/*TimerScheduledTask.schedule(new TimerTask() {
			
			@Override
			public void run() {
			activityDao.UpdateState(activity.getId());
				cancel();
			}
			}, activity.getEndTime());
		return rows;
		}
	*/
	
		System.out.println("saveActivity.threadName="+Thread.currentThread().getName());
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			
			@Override
			public void run() {
			System.out.println("updateState.threadName="+Thread.currentThread().getName());
			System.out.println("fsfgsdf");
			activityDao.UpdateState(activity.getId());
			timer.cancel();//退出任务调度后线程也会销毁
			}
			}, activity.getEndTime());
		return rows;

		//开启活动倒计时（活动到了结束时间应该将其状态修改为0）
		//方案：1）Timer 
		//     2）ScheduledExecutorService
		//      3）借助第三方任务调度框架 quartz：
		
		}
		
	@Override
	public int deleteById(long id) {
		//校验活动状态（正在进行中的活动不允许删除）
		
		int rows = activityDao.deleteById(id);
		return rows;
	}
	@Override
	public int updateObject(Activity activity) {
		
		int row = activityDao.updateObject(activity);
		return row;
	}
	@Override
	public Activity findById(long id) {
		Activity act = activityDao.findById(id);
		return act;
	}

}
